package net.zdreamer.geracomium.utils.file;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import java.util.Map;
import java.util.Map.Entry;

/**
 * Created by xuhaitao on 14/11/21.
 */
public class SharePreferencesUtil {

    /**
     * 写入共享数据的信息 私有模式
     * @param context	App的上下文
     * @param name		共享数据的文件名 ，如果为null 表示为默认的共享数据
     * @param map		写入的共享数据的Map
     * @return true 为 写入成功  false 为写入数据失败 或者map为空
     */
    public static boolean Writer(Context context ,String name, Map<String, Object> map){
        if(map==null){
            return false;
        }
        SharedPreferences share;
        if(name==null){
            share = ((Activity)context).getPreferences(Context.MODE_PRIVATE);
        }
        else{
            share = context.getSharedPreferences(name, Context.MODE_PRIVATE);
        }

        Editor editor = share.edit();

        for(Entry<String, Object> entiry : map.entrySet()){

            if(entiry.getValue() instanceof String){
                editor.putString(entiry.getKey(), (String)entiry.getValue());
            }
            if(entiry.getValue() instanceof Integer){
                editor.putInt(entiry.getKey(), (Integer)entiry.getValue());
            }
            if(entiry.getValue() instanceof Boolean){
                editor.putBoolean(entiry.getKey(), (Boolean)entiry.getValue());
            }
            if(entiry.getValue() instanceof Float){
                editor.putFloat(entiry.getKey(), (Float)entiry.getValue());
            }
            if(entiry.getValue() instanceof Long){
                editor.putLong(entiry.getKey(), (Long)entiry.getValue());
            }
        }
        return editor.commit();
    }
    /**
     * 读取共享数据的信息 私有模式
     * @param context	App的上下文
     * @param name		共享数据的文件名 ，如果为null 表示为默认的共享数据
     * @return	Map 	键值对数据
     */
    public static Map<String, ?> Read(Context context,String name){
        SharedPreferences share;
        if(name==null){
            share = ((Activity)context).getPreferences(Context.MODE_PRIVATE);
        }
        else{
            share = context.getSharedPreferences(name, Context.MODE_PRIVATE);
        }
        return share.getAll();
    }


    /**
     * 清除共享参数文件里的内容
     * @param context
     * @param name
     */

    public static void deleteAll(Context context ,String name){
        SharedPreferences share;
        if(name==null){
            share = ((Activity)context).getPreferences(Context.MODE_PRIVATE);
        }
        else{
            share = context.getSharedPreferences(name, Context.MODE_PRIVATE);
        }

        Editor editor = share.edit();
        editor.clear();
    }
}
